from datetime import timedelta

from redis import StrictRedis
import pymysql


class Config:
    # 设置配置同名的类的属性
    DEBUG = True
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:mysql@127.0.0.1:3306/info"
    SQLALCHEMY_TRACK_MODIFICATIONS = False  # 是否追踪数据库变化
    REDIS_HOST = "127.0.0.1"  # redis数据的ip
    REDIS_PORT = 6379  # 设置redis端口
    SESSION_TYPE = "redis"  # 设置session存储形式
    SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_PORT)
    SESSION_USE_SIGNER = True  # 设置sessionid进行加密,需要设置秘钥
    SECRET_KEY = "BKrVbxqPfi/6Nf6wI3jnCAIFf0gduHJCe6Zo3BL2RQM6LacYgpL8mQZRqe8wlMIb"  # 应用秘钥
    PERMANENT_SESSION_LIFETIME = timedelta(days=7)  # 默认开启了session存储,可以自定义过期时间
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True  # 设置请求结束后自动提交


# 根据不同的环境生成不同的配置 （ 配置子类化 ）
# 开发环境： 项目开发阶段使用的编程环境
# 生产环境： 项目发布上线后使用的编程环境（用户访问的外网环境）

class DevelopmentConfig(Config):  # 开发环境配置
    DEBUG = True  # 设置调试模式


class ProductConfig(Config):  # 生产环境配置
    DEBUG = False


# 根据用户调用不同的生产环境，定义一个字典
config_dict = {
    "dev": DevelopmentConfig,
    "pro": ProductConfig
}
